package co.inventario.presentacion;

import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;

import co.inventario.entidad.CiudadDTO;
import co.inventario.entidad.ZonaDTO;
import co.inventario.modelo.fachada.ZonaFachada;

@ManagedBean
public class ZonaBean {

	ZonaDTO zonaDTO;
	ArrayList<ZonaDTO> zonaDTOlista;
	List<ZonaDTO> zonaDTOfilter;

	public ZonaDTO getZonaDTO() {
		return zonaDTO;
	}

	public void setZonaDTO(ZonaDTO zonaDTO) {
		this.zonaDTO = zonaDTO;
	}

	public ArrayList<ZonaDTO> getZonaDTOlista() {
		return zonaDTOlista;
	}

	public void setZonaDTOlista(ArrayList<ZonaDTO> zonaDTOlista) {
		this.zonaDTOlista = zonaDTOlista;
	}

	public List<ZonaDTO> getZonaDTOfilter() {
		return zonaDTOfilter;
	}

	public void setZonaDTOfilter(List<ZonaDTO> zonaDTOfilter) {
		this.zonaDTOfilter = zonaDTOfilter;
	}

	private void refrescarTablaZona() {
		try {
			ZonaFachada zonaFachada = new ZonaFachada();
			zonaDTOlista = zonaFachada.consultarTodo();
		} catch (Exception exception) {
			System.out.println("Error producido al consultar las Zonas en el Bean: " + exception.getMessage());
		}
	}

	public ZonaBean() {
		zonaDTO = new ZonaDTO();
		CiudadDTO ciudadDTO = new CiudadDTO();
		zonaDTO.setCiudadDTO(ciudadDTO);
		refrescarTablaZona();
	}

	public void crear() {
		FacesContext context = FacesContext.getCurrentInstance();
		try {
			if (zonaDTO.getNvNombreZona() == null || "".equals(zonaDTO.getNvNombreZona().trim())) {
				context.addMessage(null, new FacesMessage("error ", "El campo nombre de la ciudad esta vacio" + zonaDTO.getNvNombreZona()));
			} else {
				ZonaFachada zonaFachada = new ZonaFachada();
				zonaFachada.crear(zonaDTO);
				refrescarTablaZona();
				context.addMessage(null, new FacesMessage("succesfull", "el campo se ha creado con exito : " + zonaDTO.getNvNombreZona()));
			}
		} catch (Exception exc) {
			context.addMessage(null, new FacesMessage("Error", "se ha producido un error - el error es  : " + exc.getMessage()));
		}
	}

	public void consultartodo() {
		FacesContext contexto = FacesContext.getCurrentInstance();
		try {
			refrescarTablaZona();
		} catch (Exception excepcion) {
			contexto.addMessage(null, new FacesMessage("Error", "Se ha producido un error al consultar el registro: " + excepcion.getMessage()));
		}
	}

	public void actualizar() {
		FacesContext contexto = FacesContext.getCurrentInstance();
		try {
			ZonaFachada zonaFachada = new ZonaFachada();
			zonaFachada.actualizar(zonaDTO);
			refrescarTablaZona();
			contexto.addMessage(null, new FacesMessage("succesfull", "el campo se ha Actualizado con exito : " + zonaDTO.getNvNombreZona()));
		} catch (Exception excepcion) {
			contexto.addMessage(null, new FacesMessage("Error", "Se ha producido un error al consultar el registro: " + excepcion.getMessage()));
		}
	}
}
